Computer systems require reliable storage for large amounts of data. Often, redundant arrays of independent (or inexpensive) disks (RAID) devices are used to provide such storage. In general, RAID devices involve storing data on a plurality of hard disk drives. The use of RAID techniques increases the reliability and/or speed of data storage and retrieval. Although there are various schemes, or RAID levels, according to which data may be stored and retrieved, RAID systems all generally involve the distribution of data across multiple storage devices. The distribution and retrieval of data from the devices is usually performed by a controller interconnected to each of the storage devices in the RAID system.
In order to further enhance the fault tolerant aspects of data storage, it is desirable to ensure that there is no single point of failure within a storage subsystem. Therefore, in addition to distributing data among a number of storage devices, high reliability storage systems have used two controllers, to allow the storage system to continue to operate even if a fault develops with respect to the primary controller. In such systems, the storage devices must be capable of passing data to and receiving data and commands from either of the controllers. Accordingly, high reliability storage systems have typically used small computer system interface (SCSI) or Fibre Channel type storage devices, that can be operated on a shared bus and/or provide multiple ports for interconnecting to controllers.
Although SCSI and fiber channel compliant devices facilitate the use of redundant controllers in a storage system, such devices are typically much more expensive than devices that are not capable of operating in connection with a shared communication bus. However, less expensive devices, such as those adhering to the advanced technology attachment (ATA) or serial ATA (SATA) standards must be interconnected with a controller in a point to point relationship (i.e. over a dedicated signal line). Accordingly, high reliability systems, such as RAID storage systems, using redundant device controllers have been required to use the more expensive SCSI or Fibre Channel devices.
Therefore, it would be desirable to provide for redundant or multiple hosts or controllers in connection with inexpensive devices. Furthermore, it would be advantageous to allow devices incapable of operation on a shared bus to be interconnected to a number of hosts or controllers in a way that is reliable, and that is itself relatively inexpensive to implement.